home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1992 June: ROMin Holiday / ADC Developer CD (1992-06) (''ROMin Holiday'')_iso / Developer Connection - 06-1992.iso / Developer Essentials / MPW Interfaces & Libraries / CIncludes / Memory.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-01-29  |  9.6 KB  |  347 lines  |  [TEXT/MPS ]

  1.  
  2. /************************************************************
  3.  
  4. Created: Friday, September 13, 1991 at 12:54 PM
  5.  Memory.h
  6.  C Interface to the Macintosh Libraries
  7.  
  8.  
  9.   Copyright Apple Computer, Inc. 1985-1991
  10.   All rights reserved
  11.  
  12. ************************************************************/
  13.  
  14.  
  15. #ifndef __MEMORY__
  16. #define __MEMORY__
  17.  
  18. #ifndef __TYPES__
  19. #include <Types.h>
  20. #endif
  21.  
  22.  
  23. enum {
  24.  
  25.  maxSize = 0x800000,    /*Max data block size is 8 megabytes*/
  26.  defaultPhysicalEntryCount = 8,
  27.  
  28. /* values returned from the GetPageState function */
  29.  kPageInMemory = 0,
  30.  kPageOnDisk = 1,
  31.  kNotPaged = 2
  32. };
  33.  
  34. typedef long Size;        /* size of a block in bytes */
  35. typedef pascal long (*GrowZoneProcPtr)(Size cbNeeded);
  36.  
  37. struct Zone {
  38.  Ptr bkLim;
  39.  Ptr purgePtr;
  40.  Ptr hFstFree;
  41.  long zcbFree;
  42.  GrowZoneProcPtr gzProc;
  43.  short moreMast;
  44.  short flags;
  45.  short cntRel;
  46.  short maxRel;
  47.  short cntNRel;
  48.  short maxNRel;
  49.  short cntEmpty;
  50.  short cntHandles;
  51.  long minCBFree;
  52.  ProcPtr purgeProc;
  53.  Ptr sparePtr;
  54.  Ptr allocPtr;
  55.  short heapData;
  56. };
  57.  
  58. typedef struct Zone Zone;
  59. typedef Zone *THz;
  60.  
  61. struct MemoryBlock {
  62.  void * address;
  63.  unsigned long count;
  64. };
  65.  
  66. typedef struct MemoryBlock MemoryBlock;
  67.  
  68. struct LogicalToPhysicalTable {
  69.  MemoryBlock logical;
  70.  MemoryBlock physical[defaultPhysicalEntryCount];
  71. };
  72.  
  73. typedef struct LogicalToPhysicalTable LogicalToPhysicalTable;
  74.  
  75.  
  76. typedef short PageState;
  77. typedef short StatusRegisterContents;
  78.  
  79. #ifdef __cplusplus
  80. extern "C" {
  81. #endif
  82. #define GetApplLimit() (* (Ptr*) 0x0130)
  83. #pragma parameter __A0 GetZone
  84. pascal THz GetZone(void)
  85.  = 0xA11A; 
  86. #define SystemZone() (* (THz*) 0x02A6)
  87. #define ApplicZone() (* (THz*) 0x02AA)
  88. #define ApplicationZone() (* (THz*) 0x02AA)
  89. #pragma parameter __A0 NewHandle(__D0)
  90. pascal Handle NewHandle(Size byteCount)
  91.  = 0xA122; 
  92. #pragma parameter __A0 NewHandleSys(__D0)
  93. pascal Handle NewHandleSys(Size byteCount)
  94.  = 0xA522; 
  95. #pragma parameter __A0 NewHandleClear(__D0)
  96. pascal Handle NewHandleClear(Size byteCount)
  97.  = 0xA322; 
  98. #pragma parameter __A0 NewHandleSysClear(__D0)
  99. pascal Handle NewHandleSysClear(Size byteCount)
  100.  = 0xA722; 
  101. #pragma parameter __A0 HandleZone(__A0)
  102. pascal THz HandleZone(Handle h)
  103.  = 0xA126; 
  104. #pragma parameter __A0 RecoverHandle(__A0)
  105. pascal Handle RecoverHandle(Ptr p)
  106.  = 0xA128; 
  107. #pragma parameter __A0 RecoverHandleSys(__A0)
  108. pascal Handle RecoverHandleSys(Ptr p)
  109.  = 0xA528; 
  110. #pragma parameter __A0 NewPtr(__D0)
  111. pascal Ptr NewPtr(Size byteCount)
  112.  = 0xA11E; 
  113. #pragma parameter __A0 NewPtrSys(__D0)
  114. pascal Ptr NewPtrSys(Size byteCount)
  115.  = 0xA51E; 
  116. #pragma parameter __A0 NewPtrClear(__D0)
  117. pascal Ptr NewPtrClear(Size byteCount)
  118.  = 0xA31E; 
  119. #pragma parameter __A0 NewPtrSysClear(__D0)
  120. pascal Ptr NewPtrSysClear(Size byteCount)
  121.  = 0xA71E; 
  122. #pragma parameter __A0 PtrZone(__A0)
  123. pascal THz PtrZone(Ptr p)
  124.  = 0xA148; 
  125. #define GZSaveHnd() (* (Handle*) 0x0328)
  126. #define TopMem() (* (Ptr*) 0x0108)
  127. #pragma parameter __D0 MaxBlock
  128. pascal long MaxBlock(void)
  129.  = 0xA061; 
  130. #pragma parameter __D0 MaxBlockSys
  131. pascal long MaxBlockSys(void)
  132.  = 0xA461; 
  133. #pragma parameter __D0 StackSpace
  134. pascal long StackSpace(void)
  135.  = 0xA065; 
  136. #pragma parameter __A0 NewEmptyHandle
  137. pascal Handle NewEmptyHandle(void)
  138.  = 0xA166; 
  139. #pragma parameter __A0 NewEmptyHandleSys
  140. pascal Handle NewEmptyHandleSys(void)
  141.  = 0xA566; 
  142. #pragma parameter HLock(__A0)
  143. pascal void HLock(Handle h)
  144.  = 0xA029; 
  145. #pragma parameter HUnlock(__A0)
  146. pascal void HUnlock(Handle h)
  147.  = 0xA02A; 
  148. #pragma parameter HPurge(__A0)
  149. pascal void HPurge(Handle h)
  150.  = 0xA049; 
  151. #pragma parameter HNoPurge(__A0)
  152. pascal void HNoPurge(Handle h)
  153.  = 0xA04A; 
  154. #pragma parameter HLockHi(__A0)
  155. pascal void HLockHi(Handle h)
  156.  = {0xA064,0xA029}; 
  157. #if SystemSixOrLater
  158. #pragma parameter __D0 StripAddress(__D0)
  159. pascal Ptr StripAddress(void *theAddress)
  160.  = 0xA055; 
  161. #else
  162. pascal Ptr StripAddress(void *theAddress);
  163. #endif
  164. #pragma parameter __D0 Translate24To32(__D0)
  165. pascal Ptr Translate24To32(void *addr24)
  166.  = 0xA091; 
  167. pascal Handle TempNewHandle(Size logicalSize,OSErr *resultCode)
  168.  = {0x3F3C,0x001D,0xA88F}; 
  169. pascal Size TempMaxMem(Size *grow)
  170.  = {0x3F3C,0x0015,0xA88F}; 
  171. pascal long TempFreeMem(void)
  172.  = {0x3F3C,0x0018,0xA88F}; 
  173. /*  Temporary Memory routines renamed, but obsolete, in System 7.0 and later.  */
  174. pascal void TempHLock(Handle h,OSErr *resultCode)
  175.  = {0x3F3C,0x001E,0xA88F}; 
  176. pascal void TempHUnlock(Handle h,OSErr *resultCode)
  177.  = {0x3F3C,0x001F,0xA88F}; 
  178. pascal void TempDisposeHandle(Handle h,OSErr *resultCode)
  179.  = {0x3F3C,0x0020,0xA88F}; 
  180. pascal Ptr TempTopMem(void)
  181.  = {0x3F3C,0x0016,0xA88F}; 
  182. /*  Temporary Memory routines as they were known before System 7.0.  */
  183. pascal Size MFMaxMem(Size *grow)
  184.  = {0x3F3C,0x0015,0xA88F}; 
  185. pascal long MFFreeMem(void)
  186.  = {0x3F3C,0x0018,0xA88F}; 
  187. pascal Handle MFTempNewHandle(Size logicalSize,OSErr *resultCode)
  188.  = {0x3F3C,0x001D,0xA88F}; 
  189. pascal void MFTempHLock(Handle h,OSErr *resultCode)
  190.  = {0x3F3C,0x001E,0xA88F}; 
  191. pascal void MFTempHUnlock(Handle h,OSErr *resultCode)
  192.  = {0x3F3C,0x001F,0xA88F}; 
  193. pascal void MFTempDisposHandle(Handle h,OSErr *resultCode)
  194.  = {0x3F3C,0x0020,0xA88F}; 
  195. pascal Ptr MFTopMem(void)
  196.  = {0x3F3C,0x0016,0xA88F}; 
  197. pascal void InitApplZone(void)
  198.  = 0xA02C; 
  199. pascal void InitZone(GrowZoneProcPtr pgrowZone,short cmoreMasters,void *limitPtr,
  200.  void *startPtr); 
  201. #pragma parameter SetZone(__A0)
  202. pascal void SetZone(THz hz)
  203.  = 0xA01B; 
  204. #pragma parameter __D0 CompactMem(__D0)
  205. pascal Size CompactMem(Size cbNeeded)
  206.  = 0xA04C; 
  207. #pragma parameter __D0 CompactMemSys(__D0)
  208. pascal Size CompactMemSys(Size cbNeeded)
  209.  = 0xA44C; 
  210. #pragma parameter PurgeMem(__D0)
  211. pascal void PurgeMem(Size cbNeeded)
  212.  = 0xA04D; 
  213. #pragma parameter PurgeMemSys(__D0)
  214. pascal void PurgeMemSys(Size cbNeeded)
  215.  = 0xA44D; 
  216. #pragma parameter __D0 FreeMem
  217. pascal long FreeMem(void)
  218.  = 0xA01C; 
  219. #pragma parameter __D0 FreeMemSys
  220. pascal long FreeMemSys(void)
  221.  = 0xA41C; 
  222. #pragma parameter ResrvMem(__D0)
  223. pascal void ResrvMem(Size cbNeeded)
  224.  = 0xA040; 
  225. #pragma parameter ReserveMem(__D0)
  226. pascal void ReserveMem(Size cbNeeded)
  227.  = 0xA040; 
  228. #pragma parameter ReserveMemSys(__D0)
  229. pascal void ReserveMemSys(Size cbNeeded)
  230.  = 0xA440; 
  231. #pragma parameter __D0 MaxMem(__A1)
  232. pascal Size MaxMem(Size *grow)
  233.  = {0xA11D,0x2288}; 
  234. #pragma parameter __D0 MaxMemSys(__A1)
  235. pascal Size MaxMemSys(Size *grow)
  236.  = {0xA51D,0x2288}; 
  237. #pragma parameter SetGrowZone(__A0)
  238. pascal void SetGrowZone(GrowZoneProcPtr growZone)
  239.  = 0xA04B; 
  240. #pragma parameter SetApplLimit(__A0)
  241. pascal void SetApplLimit(void *zoneLimit)
  242.  = 0xA02D; 
  243. #pragma parameter MoveHHi(__A0)
  244. pascal void MoveHHi(Handle h)
  245.  = 0xA064; 
  246. #pragma parameter DisposPtr(__A0)
  247. pascal void DisposPtr(Ptr p)
  248.  = 0xA01F; 
  249. #pragma parameter DisposePtr(__A0)
  250. pascal void DisposePtr(Ptr p)
  251.  = 0xA01F; 
  252. pascal Size GetPtrSize(Ptr p); 
  253. #pragma parameter SetPtrSize(__A0,__D0)
  254. pascal void SetPtrSize(Ptr p,Size newSize)
  255.  = 0xA020; 
  256. #pragma parameter DisposHandle(__A0)
  257. pascal void DisposHandle(Handle h)
  258.  = 0xA023; 
  259. #pragma parameter DisposeHandle(__A0)
  260. pascal void DisposeHandle(Handle h)
  261.  = 0xA023; 
  262. pascal Size GetHandleSize(Handle h); 
  263. #pragma parameter SetHandleSize(__A0,__D0)
  264. pascal void SetHandleSize(Handle h,Size newSize)
  265.  = 0xA024; 
  266. #pragma parameter EmptyHandle(__A0)
  267. pascal void EmptyHandle(Handle h)
  268.  = 0xA02B; 
  269. #pragma parameter ReallocHandle(__A0,__D0)
  270. pascal void ReallocHandle(Handle h,Size byteCount)
  271.  = 0xA027; 
  272. #pragma parameter ReallocateHandle(__A0,__D0)
  273. pascal void ReallocateHandle(Handle h,Size byteCount)
  274.  = 0xA027; 
  275. #pragma parameter HSetRBit(__A0)
  276. pascal void HSetRBit(Handle h)
  277.  = 0xA067; 
  278. #pragma parameter HClrRBit(__A0)
  279. pascal void HClrRBit(Handle h)
  280.  = 0xA068; 
  281. pascal void MoreMasters(void)
  282.  = 0xA036; 
  283. #pragma parameter BlockMove(__A0,__A1,__D0)
  284. pascal void BlockMove(const void *srcPtr,void *destPtr,Size byteCount)
  285.  = 0xA02E; 
  286. #define MemError() (* (OSErr*) 0x0220)
  287. pascal void PurgeSpace(long *total,long *contig); 
  288. #pragma parameter __D0 HGetState(__A0)
  289. pascal char HGetState(Handle h)
  290.  = 0xA069; 
  291. #pragma parameter HSetState(__A0,__D0)
  292. pascal void HSetState(Handle h,char flags)
  293.  = 0xA06A; 
  294. #pragma parameter SetApplBase(__A0)
  295. pascal void SetApplBase(void *startPtr)
  296.  = 0xA057; 
  297. pascal void MaxApplZone(void)
  298.  = 0xA063; 
  299. #pragma parameter __D0 HoldMemory(__A0,__A1)
  300. pascal OSErr HoldMemory(void *address,unsigned long count)
  301.  = {0x7000,0xA05C}; 
  302. #pragma parameter __D0 UnholdMemory(__A0,__A1)
  303. pascal OSErr UnholdMemory(void *address,unsigned long count)
  304.  = {0x7001,0xA05C}; 
  305. #pragma parameter __D0 LockMemory(__A0,__A1)
  306. pascal OSErr LockMemory(void *address,unsigned long count)
  307.  = {0x7002,0xA05C}; 
  308. #pragma parameter __D0 LockMemoryContiguous(__A0,__A1)
  309. pascal OSErr LockMemoryContiguous(void *address,unsigned long count)
  310.  = {0x7004,0xA05C}; 
  311. #pragma parameter __D0 UnlockMemory(__A0,__A1)
  312. pascal OSErr UnlockMemory(void *address,unsigned long count)
  313.  = {0x7003,0xA05C}; 
  314. pascal OSErr GetPhysical(LogicalToPhysicalTable *addresses,unsigned long *physicalEntryCount); 
  315. #pragma parameter __D0 DeferUserFn(__A0,__D0)
  316. pascal OSErr DeferUserFn(ProcPtr userFunction,void *argument)
  317.  = 0xA08F; 
  318. #pragma parameter __D0 DebuggerGetMax
  319. pascal long DebuggerGetMax(void)
  320.  = {0x7000,0xA08D}; 
  321. pascal void DebuggerEnter(void)
  322.  = {0x7001,0xA08D}; 
  323. pascal void DebuggerExit(void)
  324.  = {0x7002,0xA08D}; 
  325. pascal void DebuggerPoll(void)
  326.  = {0x7003,0xA08D}; 
  327. #pragma parameter __D0 GetPageState(__A0)
  328. pascal PageState GetPageState(const void *address)
  329.  = {0x7004,0xA08D}; 
  330. #pragma parameter __D0 PageFaultFatal
  331. pascal Boolean PageFaultFatal(void)
  332.  = {0x7005,0xA08D}; 
  333. #pragma parameter __D0 DebuggerLockMemory(__A0,__A1)
  334. pascal OSErr DebuggerLockMemory(void *address,unsigned long count)
  335.  = {0x7006,0xA08D}; 
  336. #pragma parameter __D0 DebuggerUnlockMemory(__A0,__A1)
  337. pascal OSErr DebuggerUnlockMemory(void *address,unsigned long count)
  338.  = {0x7007,0xA08D}; 
  339. #pragma parameter __D0 EnterSupervisorMode
  340. pascal StatusRegisterContents EnterSupervisorMode(void)
  341.  = {0x7008,0xA08D}; 
  342. #ifdef __cplusplus
  343. }
  344. #endif
  345.  
  346. #endif
  347.